package com.vsd.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.fastjson.JSONObject;
import com.demo.annotation.LoginFilter;
import com.demo.bean.DataTable;
import com.demo.bean.Ret;
import com.demo.controller.CoreAdminController;
import com.demo.domain.Admin;
import com.demo.service.AdminService;
import com.demo.util.JSONUtils;
import com.demo.util.StringUtil;
import com.demo.validator.AdminLoginValidate;
import com.mdx.mobile.commons.verfy.Md5;

@Controller
@RequestMapping("admin")
@LoginFilter(validateClz=AdminLoginValidate.class)
public class AdminController extends CoreAdminController{
	@Autowired
	private AdminService adminService;
	
	@RequestMapping("/list")
	@ResponseBody
	public String citylist(HttpSession session,@RequestParam("draw") Integer draw
			,@RequestParam("start") Integer start,@RequestParam("length") Integer length
			,@RequestParam("search[value]") String search,String areaCode,HttpServletRequest request){
		
		
		Page<Admin> list = adminService.findByRoleCode("ADMIN",new PageRequest(start/length, length, new Sort(Direction.DESC, "createTime")));
		
		return JSONUtils.serialize(new DataTable(draw+1,Integer.parseInt(list.getTotalElements()+""), list.getContent()));
	}
	
	
	@RequestMapping("/save")
	@ResponseBody
	public String save(Admin record) throws Exception{
		if(StringUtils.isBlank(record.getId())){
			//是否已推荐
			record.setId(StringUtil.getUUID());
			adminService.create(record);
		}else{
			if(StringUtils.isNotBlank(record.getPassword())) record.setPassword(Md5.md5(record.getPassword()));
			adminService.updateByPrimaryKeySelective(record);
		}
		return JSONUtils.serialize(new Ret(0));
	}
	
	@RequestMapping("/findById")
	@ResponseBody
	public String findById(String id){
		Admin r = adminService.findOne(id);
		return JSONUtils.serialize(r);
	}

	@RequestMapping("/unique")
	@ResponseBody
	public String unique(String account){
		JSONObject ret = new JSONObject();
		Admin c =  adminService.findByAccount(account);
		if(c==null)  ret.put("valid", true);
		else ret.put("valid", false);
		return ret.toString();
	}

}
